package secondStage.part5.多线程.线程安全;

import java.util.*;

/**
 * @ClassName: [ThreadDemo]
 * @Description: 线程安全
 * @Author: [黄劲松]
 * @CreateDate: [2021-04-05]
 * @Version: [v1.0]
 */
/*
2.5线程安全的类
StringBuffer
    ●从版本JDK 5开始,被StringBuilder 替代。通常应该使用StringBuilder类,因为它支持所有相同的操作,但它更快，因为它不执行同步
Vector
    ●从Java 2平台v1.2开始，该类改进了List接口,使其誠为Java Collections Framework的成员。与新的集合实现不同，Vector被同步。 如果不需要线程安全的实现，建议使用ArrayList代替Vector
Hashtable
    ●该类实现了一个哈希表， 它将键映射到值。任何非null对象都可以用作键或者值
    ●从Java 2平台v1.2开始，该类进行了改进，实现了Map接口,使其成为Java Collections Framework的成员。与新的集合实现不同，Hashtable被同步。 如果不需要线程安全的实现，建议使用HashMap代替Hashtable
*/
public class ThreadDemo {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();//被synchronized修饰，线程安全
        StringBuilder sb1 = new StringBuilder();//线程不安全

        Vector<String> v = new Vector<>();//线程安全
        ArrayList<String> arrayList = new ArrayList<>();//线程不安全

        Hashtable<String, String> ht = new Hashtable<>();//线程安全
        HashMap<String, String> hm = new HashMap<>();//线程不安全

        //static <T> List<T> synchronizedlist (List<T> list) 返回由指定列表支持的同步(线程安全)列表
        List<String> list =Collections.synchronizedList(new ArrayList<>());
    }
}
